home *** CD-ROM | disk | FTP | other *** search
/ Meeting Pearls 4 / Meeting Pearls Vol. IV (1996)(GTI - Schatztruhe)[!].iso / Pearls / texmf / doc / makeguide / makeguide.doc < prev    next >
Text File  |  1993-05-31  |  45KB  |  1,014 lines

  1. Parts of this file are extracted from the Texinfo manual.
  2. It documents makeinfo, a program that converts Texinfo files into
  3. Info and AmigaGuide(R) files.
  4.  
  5.    Copyright (C) 1993 Reinhard Spisser and Sebastiano Vigna
  6.  
  7.    Permission is granted to make and distribute verbatim copies of this
  8. manual provided the copyright notice and this permission notice are
  9. preserved on all copies.
  10.  
  11.    Permission is granted to copy and distribute modified versions of
  12. this manual under the conditions for verbatim copying, provided that
  13. the entire resulting derived work is distributed under the terms of a
  14. permission notice identical to this one.
  15.  
  16.    Permission is granted to copy and distribute translations of this
  17. manual into another language, under the above conditions for modified
  18. versions, except that this permission notice may be stated in a
  19. translation approved by the Free Software Foundation.
  20.  
  21.  
  22.  
  23. makeinfo
  24. ********
  25.  
  26.    This chapter documents the use of the makeinfo program, versions
  27. 1.55 and later. Parts of it are extracted from the Texinfo manual.
  28.  
  29. Requirements
  30. ************
  31.  
  32.        Makeinfo 1.55 runs only with version 2.04 or higher of the
  33. operating system.
  34.  
  35.    In order to print the documentation on a printer you need TeX, the
  36. typesetting language developed by Donald E. Knuth. If you want to use
  37. texinfotimes.tex you need the Postscript fonts and a TeX able to
  38. handle Postscript fonts. AmigaTeX by Radical Eye Software handles
  39. PostScript fonts correctly.
  40.  
  41.    In order to view the AmigaGuide(R) files, you need to copy the
  42. amigaguide.library from the libs directory in libs:.
  43.  
  44. Distribution
  45. ************
  46.  
  47.        Makeguide is distributed under terms of the GNU copying
  48. license. Please read the file COPYING contained in this distribution.
  49.  
  50.        AmigaGuideAmigaGuide.infoamigaguide.library,
  51. WDisplayWDisplay.info (C) Copyright 1991-93 Commodore-Amiga,
  52. Inc.  All Rights Reserved. Reproduced and distributed under license
  53. from Commodore.
  54.  
  55.    AMIGAGUIDE SOFTWARE IS PROVIDED AS IS AND SUBJECT TO CHANGE; NO
  56. WARRANTIES ARE MADE. ALL USE IS AT YOU OWN RISK. NO LIABILITY OR
  57. RESPONSIBILITY IS ASSUMED.
  58.  
  59. Why makeinfo?
  60. *************
  61.  
  62. How it started
  63. ==============
  64.  
  65.    This project started with the idea of bringing to the Amiga
  66. community a set of tools which would have greatly simplified the
  67. handling of on-line help as opposed to printed manuals. Currently, the
  68. Amiga programmer has to keep two separate files which have to be
  69. updated in parallel. If also some hypertext feature is desired, the
  70. document writer has to keep a third version of the file.
  71.  
  72.    This is unbearable. So we began to look around to find a solution of
  73. this problem. We finally found something that would be sufficient for
  74. this tasks: it's called Texinfo.
  75.  
  76. What is Texinfo?
  77. ================
  78.  
  79.    The GNU people have found a great way of working around the problem
  80. described in the previous section.
  81.  
  82.    A Texinfo document is written in a very simple dialect of TeX that
  83. is easy to learn and use, and it's specifically tailored for the
  84. creation of technical manuals. Texinfo focuses on logical aspects--so
  85. the @t{} command, which typesets in fixed width font whatever is in
  86. the braces, should be never used, and rather replaced with @code{},
  87. @file{} or @key{}, depending on the semantics of the text involved.
  88. This also ensures that each user can customize its Texinfo macros in
  89. such a way to spot out specific parts of a Texinfo file, or to set a
  90. different page size, text formatting etc (an example is
  91. texinfotimes.tex that prints .texinfo with PostScript fonts).
  92.  
  93.    Of course, the format has to be rich enough to express all the needs
  94. of a technical manual, and small enough to allow a decent translation
  95. of all the available constructs to plain ASCII (for an hypotetical
  96. hypertext viewer).  Also in this respect Texinfo is an excellent
  97. balance.
  98.  
  99.    Full documentation is available on how to write a Texinfo
  100. document. It is written, of course, in Texinfo, and is very clear.
  101. You should be able to start authoring a Texinfo document in an hour
  102. or so. If you're used to TeX, ten minutes will suffice. This
  103. documentation can be found on most ftp sites which have GNU stuff.
  104. The latest version of Texinfo we know of is 3.0. It's a final, very
  105. stable version and the differences to the previous version (2.16) are
  106. very small (indeed GNU identifies the version inside the documentation
  107. as 2.18 but the release is called 3.0).
  108.  
  109. Output modes
  110. ============
  111.  
  112.    Once a Texinfo document is ready, it can be converted in one of the
  113. following ways:
  114.  
  115.   1. It can be passed through TeX using the set of macros
  116.      texinfo.tex. You will get a beautiful printed manual.
  117.  
  118.   2. It can be passed through the standard makeinfo in its Info
  119.      mode; it will generate an Info document (Info is the GNU
  120.      hypertext reader). This is not much of interest for you.
  121.  
  122.   3. It can be passed through makeinfo with the -no-headers option;
  123.      it will generate an almost plain ASCII text file (cross references
  124.      and indices will still be in Info style).
  125.  
  126.      But with our version of makeinfo,
  127.  
  128.   4. It can be passed through makeinfo with the -amiga option; it
  129.      will generate an AmigaGuide(R) document; cross references, menus
  130.      and indices will become buttons.
  131.  
  132.   5. It can be passed through makeinfo with the -amiga
  133.      -no-headers options; it will generate a plain ASCII text file.
  134.  
  135.   6. It can be passed through makeinfo with the -amiga-39 option;
  136.      it will generate an AmigaGuide(R) V39 document with bold and
  137.      italics attributes; cross references, menus and indices will
  138.      become buttons.
  139.  
  140.   7. It can be passed through makeinfo with the -amiga-39
  141.      -no-headers options; it will generate a ASCII text file with ANSI
  142.      escape sequences for boldface and italics.
  143.  
  144.  
  145.    See Amiga specific options, for more details on the Amiga-specific
  146. features of makeinfo.
  147.  
  148.    Thus, you have to maintain just a document in order to produce a
  149. printed manual, on-line hypertext documentation and plain ASCII
  150. documentation.  Texinfo of course relies on a series of information
  151. you specify, like menus, cross references, etc., but the amount of work
  152. you'll need to do this will be very small. It also makes a great job in
  153. converting to ASCII--for instance, @emph{} text, which comes out
  154. slanted in the manual, is shown with two asterisk around, the new
  155. option -amiga-39 produces boldface for AmigaGuide(R) 3.0. We would
  156. like to urge all of the Amiga community programmers, in particular the
  157. people distributing documentation as a file, to start using
  158. Texinfo. It will be an enormous quantum leap.
  159.  
  160.    Since makeguide was first released (July 1992), some Amiga
  161. developers started to write the documentation in Texinfo; we know of:
  162.  
  163.    * ToolManager by Stefan Becker;
  164.  
  165.    * Term by Olaf Barthel;
  166.  
  167.    * F-Finder by Markus Juani Aalto;
  168.  
  169.    * Cerca by Carlo Todeschini;
  170.  
  171.    * Arcalc by Roberto Attias;
  172.  
  173.    * SuperDuper, Mostra, Leggi, ne (the nice editor) by Sebastiano
  174.      Vigna;
  175.  
  176.    * Most by Uwe Röhm;
  177.  
  178.    * Assigns 1.1 by Enrico Fedrigo;
  179.  
  180.    * MegaD 3.0 (soon to be released);
  181.  
  182.    * Makeguide 1.55 by Reinhard Spisser and Sebastiano Vigna 8^).
  183.  
  184.    In addition to this, you can have near all the GNU documentation in
  185. AmigaGuide(R) format (more than 15MB of .texi files).
  186.  
  187. What is makeinfo?
  188. *****************
  189.  
  190.    This chapter documents the use of the makeinfo program, version
  191. 1.55. It is extracted from the Texinfo manual (with minor
  192. modifications).
  193.  
  194.        makeinfo is a program for converting Texinfo files into
  195. Info and AmigaGuide(R) files.  Texinfo is a documentation system
  196. that uses a single source file to produce both on-line information and
  197. printed output.
  198.  
  199.    See the Texinfo manual, to learn about the Texinfo documentation
  200. system.
  201.  
  202. Controlling Paragraph Formats
  203. =============================
  204.  
  205.    In general, makeinfo fills the paragraphs that it outputs to an
  206. Info file.  Filling is the process of breaking and connecting lines
  207. so that lines are the same length as or shorter than the number
  208. specified as the fill column.  Lines are broken between words.  With
  209. makeinfo, you can control:
  210.  
  211.    * The width of each paragraph (the fill-column).
  212.  
  213.    * The amount of indentation that the first line of each paragraph
  214.      receives (the paragraph-indentation).
  215.  
  216. Command Line Options
  217. ====================
  218.  
  219.    The following command line options are available for makeinfo.
  220.  
  221. -D var
  222.      Cause var to be defined.  This is equivalent to @set var in
  223.      the Texinfo file.
  224.  
  225. -error-limit limit
  226.      Set the maximum number of errors that makeinfo will report
  227.      before exiting (on the assumption that continuing would be
  228.      useless).  The default number of errors that can be reported before
  229.      makeinfo gives up is 100.
  230.  
  231. -fill-column width
  232.      Specify the maximum number of columns in a line; this is the
  233.      right-hand edge of a line.  Paragraphs that are filled will be
  234.      filled to this width.  The default value for fill-column is 72.
  235.  
  236. -footnote-style style
  237.      Set the footnote style to style, either end for the end node
  238.      style or separate for the separate node style.  The value set by
  239.      this option overrides the value set in a Texinfo file by an
  240.      @footnotestyle command.  When the footnote style is
  241.      separatemakeinfo makes a new node containing the
  242.      footnotes found in the current node.  When the footnote style is
  243.      endmakeinfo places the footnote references at the end of the
  244.      current node.
  245.  
  246. -I dir
  247.      Add dir to the directory search list for finding files that are
  248.      included using the @include command.  By default, makeinfo
  249.      searches only the current directory.
  250.  
  251. -no-headers
  252.      Do not include menus or node lines in the output.  This results in
  253.      an ASCII file that you cannot read in Info since it does not
  254.      contain the requisite nodes or menus; but you can print such a
  255.      file in a single, typewriter-like font and produce acceptable
  256.      output.
  257.  
  258. -no-split
  259.      Suppress the splitting stage of makeinfo.  Normally, large
  260.      output files (where the size is greater than 70k bytes) are split
  261.      into smaller subfiles, each one approximately 50k bytes.  If you
  262.      specify -no-splitmakeinfo will not split up the output file.
  263.  
  264. -no-pointer-validate
  265. -no-validate
  266.      Suppress the pointer-validation phase of makeinfo.  Normally,
  267.      after a Texinfo file is processed, some consistency checks are
  268.      made to ensure that cross references can be resolved, etc.  See
  269.      Pointer Validation.
  270.  
  271. -no-warn
  272.      Suppress the output of warning messages.  This does not suppress
  273.      the output of error messages, only warnings.  You might want this
  274.      if the file you are creating has examples of Texinfo cross
  275.      references within it, and the nodes that are referenced do not
  276.      actually exist.
  277.  
  278. -no-number-footnotes
  279.      Supress automatic footnote numbering.  By default, makeinfo
  280.      numbers each footnote sequentially in a single node, resetting the
  281.      current footnote number to 1 at the start of each node.
  282.  
  283. -output file
  284. -o file
  285.      Specify that the output should be directed to file and not to the
  286.      file name specified in the @setfilename command found in the
  287.      Texinfo source.  file can be the special token -, which
  288.      specifies standard output.
  289.  
  290. -paragraph-indent indent
  291.      Set the paragraph indentation style to indent.  The value set by
  292.      this option overrides the value set in a Texinfo file by an
  293.      @paragraphindent command.  The value of indent is
  294.      interpreted as follows:
  295.  
  296.         * If the value of indent is asis, do not change the
  297.           existing indentation at the starts of paragraphs.
  298.  
  299.         * If the value of indent is zero, delete any existing
  300.           indentation.
  301.  
  302.         * If the value of indent is greater than zero, indent each
  303.           paragraph by that number of spaces.
  304.  
  305. -reference-limit limit
  306.      Set the value of the number of references to a node that
  307.      makeinfo will make without reporting a warning.  If a node
  308.      has more than this number of references in it, makeinfo will
  309.      make the references but also report a warning.
  310.  
  311. -U var
  312.      Cause var to be undefined.  This is equivalent to @clear
  313.      var in the Texinfo file.
  314.  
  315. -verbose
  316.      Cause makeinfo to display messages saying what it is doing.
  317.      Normally, makeinfo only outputs messages if there are errors or
  318.      warnings.
  319.  
  320. -version
  321.      Report the version number of this copy of makeinfo.
  322.  
  323. -amiga
  324.      Convert the Texinfo file in a AmigaGuide(R) hypertext file.
  325.  
  326. -amiga-39
  327.      Convert the Texinfo file in a AmigaGuide(R) V39 hypertext
  328.      file, with support for italic, boldface and other options. If
  329.      -no-headers is also specified, makeinfo produces an ASCII
  330.      file with escape sequences for italic and boldface. See Amiga
  331.      specific options.
  332.  
  333. Pointer Validation
  334. ==================
  335.  
  336.    If you do not suppress pointer-validation (by using the
  337. -no-pointer-validation option), makeinfo will check the
  338. validity of the final Info file.  Mostly, this means ensuring that
  339. nodes you have referenced really exist.  Here is a complete list of
  340. what is checked:
  341.  
  342.   1. If a `Next', `Previous', or `Up' node reference is a reference to a
  343.      node in the current file and is not an external reference such as
  344.      to (dir), then the referenced node must exist.
  345.  
  346.   2. In every node, if the `Previous' node is different from the `Up'
  347.      node, then the `Previous' node must also be pointed to by a `Next'
  348.      node.
  349.  
  350.   3. Every node except the `Top' node must have an `Up' pointer.
  351.  
  352.   4. The node referenced by an `Up' pointer must contain a reference to
  353.      the current node in some manner other than through a `Next'
  354.      reference.  This includes menu entries and cross references.
  355.  
  356.   5. If the `Next' reference of a node is not the same as the `Next'
  357.      reference of the `Up' reference, then the node referenced by the
  358.      `Next' pointer must have a `Previous' pointer that points back to
  359.      the current node.  This rule allows the last node in a section to
  360.      point to the first node of the next chapter.
  361.  
  362. Amiga specific options
  363. **********************
  364.  
  365.    This chapter describes the Amiga specific options that were added to
  366. makeinfo. See Why makeinfo?, how these features were implemented.
  367.  
  368. Amiga output
  369. ============
  370.  
  371.    Two options have been added to the GNU makeinfo:
  372.  
  373.        -amiga which converts to AmigaGuide(R) V34
  374.  
  375.        -amiga-39 which converts to AmigaGuide(R) V39 (using bold
  376. and italic).
  377.  
  378.    When the -amiga and -no-headers options are used, a plain ASCII
  379. file will be produced.
  380.  
  381.    When the -amiga-39 and -no-headers options are used,
  382. makeinfo generates ANSI escape control sequences for bold and
  383. italics.
  384.  
  385. Localization of strings
  386. =======================
  387.  
  388.    Starting with release 2.1 the Amiga Operating system supports
  389. localization of the user interface. Until now it was not possible to
  390. localize the hard-coded strings in makeinfo (you had to re-compile
  391. makeinfo) and texinfo.tex. Recompiling makeinfo needs at least
  392. 3.5 MB of free RAM space, the GNU C compiler (makeinfo uses a few GNU C
  393. 2.0 features), and a hard disk. Compiling makeinfo on a 68030 took
  394. about 10 minutes (the source is one file over 200KB long). Probably
  395. someone didn't even like the built-in strings and wanted to replace
  396. them.  This was a big handicap for people writing documentation in
  397. different languages than English and wanted to write the documentation
  398. in makeinfo.
  399.  
  400.        makeinfo (and texinfo.tex) now supports localization for all
  401. hardcoded strings. An easy to use way was provided to do this task.
  402.  
  403.    The localization is done by setting one or more of the following
  404. variables in your .Texinfo file:
  405.  
  406.      @set variable string to translate
  407.  
  408.    where variable could be one of the following:
  409.  
  410. xrefstring
  411.      Replace the standard see string that makeinfo and
  412.      texinfo.tex prints in front of a @pxref{} and @ref{}
  413.      with the string given as argument.
  414.  
  415. Xrefstring
  416.      Replace  the standard See string that makeinfo and
  417.      texinfo.tex prints in front of a @xref{} with the string
  418.      given as argument.
  419.  
  420. Footnotestring
  421.      Replace the standard Footnote string that makeinfo prints
  422.      before starting to print the footnotes. This variable has only
  423.      effect for makeinfo.
  424.  
  425. Chapterstring
  426.      Replace  the standard Chapter string that texinfo.tex use for
  427.      page headings, cross references, and others. This variable has only
  428.      effect for texinfo.tex.
  429.  
  430. Appendixstring
  431.      Replace the standard Appendix string that texinfo.tex use for
  432.      page headings, cross references, and others. This variable has only
  433.      effect for texinfo.tex.
  434.  
  435. Sectionstring
  436.      Replace  the standard Section string that texinfo.tex use for
  437.      page headings, cross references, and others. This variable has only
  438.      effect for texinfo.tex.
  439.  
  440. sectionstring
  441.      Replace the standard section string that texinfo.tex use for
  442.      page headings, cross references, and others.This variable has only
  443.      effect for texinfo.tex. (this is the section string with the
  444.      starting s lowercase).
  445.  
  446. pagestring
  447.      Replace  the standard page string that texinfo.tex use for page
  448.      headings, cross references, and others. This variable has only
  449.      effect for texinfo.tex.
  450.  
  451.        Note: To undefine the variables, you can't @set them with no
  452. arguments; if you do so, you set the translation string to an empty
  453. string. You must use @unset variable to undefine the variable.
  454.  
  455.    An example:
  456.  
  457.    To get a different string printed before the cross reference, you
  458. should add a @set command in your Texinfo file:
  459.  
  460.      @set xrefstring vedi
  461.      @set Xrefstring Vedi
  462.  
  463.    or you can add a define at the makeinfo command line:
  464.  
  465.        makeinfo -amiga-39 -D "xrefstring vedi" -D "Xrefstring Vedi"
  466. foo.texi
  467.  
  468.        Note: The localization of the strings xrefstring and
  469. Xrefstring has only effect if you set both variables.
  470.  
  471.    You may ask: why to implement the localization as variables and not
  472. as new options? We decided to do so for the following reasons:
  473.  
  474.    * we wanted to limit the attitional options of makeinfo with
  475.      respect to the original GNU makeinfo to a minimal number (in
  476.      effect only for the various versions of AmigaGuide(R));
  477.  
  478.    * a second reason is that the implementation of localization
  479.      via options to would have required many more work (it took
  480.      us about 15 minutes to see how to implement it and about 1 minute
  481.      to implement it);
  482.  
  483.    * a nice side-effect of this is that you can re-set the strings
  484.      within the document, allowing you to make a unique multi-language
  485.      document;
  486.  
  487.    * since the localization features were also implemented in the macro
  488.      packages texinfo.tex and texinfotimes.tex, you can use this
  489.      feature also when printing the .Texinfo file (you can't do this
  490.      if you specify the translated string as a command line argument of
  491.      makeinfo). For this reason you should @set the translations in
  492.      the .Texinfo file;
  493.  
  494.    * you can specify the translation strings in the .Texinfo file
  495.      without worrying if the string refers only to texinfo.tex or
  496.      makeinfo.
  497.  
  498.    * in other words, we decided to do so because doing it with variables
  499.      made the localization easier to use and more powerful.
  500.  
  501.    Example:
  502.  
  503.       @set xrefstring vedi
  504.       @set Xrefstring Vedi
  505.       @xref{Index button,},
  506.  
  507.    results in
  508.  
  509.    Vedi Index button,
  510.  
  511.       @set xrefstring Give a nice look at
  512.       @set Xrefstring Give a proper look at
  513.       @xref{Index button,},
  514.  
  515.    results in
  516.  
  517.    Give a proper look at Index button,
  518.  
  519.        Remember! You have to specify both xrefstring and
  520. Xrefstring if you want to translate the strings that are printed
  521. before a cross reference. @set-ting only xrefstring or
  522. Xrefstring does have no effect.
  523.  
  524.        Note: It's more useful if you @set the localization
  525. variables in the Texinfo document rather than using the -D feature
  526. of makeinfo, because you can also have the same effect on the printed
  527. Texinfo files.
  528.  
  529.    You can @set the variable more than one time in your document;
  530. doing so you can have pieces of code having different strings. (this
  531. because the status of the variables is verified when a cross-reference
  532. is written). This could be very useful when you're writing only one
  533. Texinfo file containing the documentation in different languages.
  534.  
  535. Index button
  536. ============
  537.  
  538.    The Index button points to the Concept Index (if the Concept Index
  539. exists).  This is done by inserting a @Index Concept Index immediatly
  540. after the beginning of the Concept Index node.
  541.  
  542. Conversion of spaces in node names
  543. ==================================
  544.  
  545.    Since AmigaGuide(R) does not support spaces in node names (when
  546. trying to get an online help with SendAmigaGuideCmdA()), the spaces
  547. are converted in underscores if the variable amiga_convert_nodes is
  548. set (done with @set amiga_convert_nodes in your Texinfo file).
  549.  
  550.    As with the localization feature of makeinfo, you can @set the
  551. conversion within the document, you have the same advantages as with the
  552. localization variables.
  553.  
  554. Using Postscript fonts
  555. ======================
  556.  
  557.    Since we have a TeX on the Amiga that handles correctly and without
  558. any problem the Adobe Postscript fonts, we decided to make a variation
  559. of the texinfo.tex macro package that prints the Texinfo files with
  560. these fonts. Computer Modern roman, italic, oblique and bold is
  561. substituted by Times roman, Times italic, Times oblique and Times bold.
  562. The Computer Modern TypeWriter font is substituted by Courier, the
  563. sans-serif style is substituted by Helvetica (actually Texinfo does
  564. not use the sans-serif style). The result of this is placed in the file
  565. texinfotimes.tex.
  566.  
  567.    To print a Texinfo document with Times fonts, the only thing you
  568. have to do is to substitute the \input texinfo line at the beginning
  569. of the Texinfo file with \input texinfotimes. You you need to
  570. recompile the file with TeX. After recompiling it you can use TeX's
  571. previewer to look how nice it is or use the printer drivers to print it.
  572.  
  573. Differences from GNU makeinfo
  574. *****************************
  575.  
  576.    While we were working on the project, it became clear that much more
  577. was possible with this new tool. For instance, all of the GNU software
  578. comes with Texinfo documentation. It was a matter of a couple of
  579. minutes to make the Texinfo manual (540K!) into an AmigaGuide(R)
  580. file that we could browse at will, in full AmigaGuide(R) hypertext.
  581.  
  582.    Every port of this kind has of course some kind of tradeoff.
  583. Info and AmigaGuide(R) have a rather vaste intersection of
  584. features, but both have specific features that can't be mimicked on the
  585. other side.
  586.  
  587.    The main design choice at the specification level was that
  588. every Texinfo should have been convertible to an
  589. AmigaGuide(R) file. And that every Texinfo file prepared for
  590. AmigaGuide(R) should have been convertible to Info format (this is
  591. essential, e.g., for people doing cross-development).
  592.  
  593.    Fortunately, we were enough lucky: all Info features are
  594. translatable in AmigaGuide(R) features, except for file splitting; but
  595. AmigaGuide(R) doesn't load a file entirely--just loads a part of it.
  596. So even a 1 megabyte document is not a problem for it. Info instead
  597. relies on a splitting mechanism which is in makeinfo: this mechanism
  598. is disabled by the options -amiga and -amiga-39.
  599.  
  600.    There are also a couple of problems with the representation of
  601. buttons; Info does not have real buttons--it just put in the text
  602. something of the form *Note Nodename::. Thus, the aspect of a line in
  603. Info or AmigaGuide(R) is very different. We chose to put in the
  604. button name only the real title of the button, i.e., the destination
  605. node name if nothing else is specified, or the second argument of a
  606. @ref@xref or @pxref command if available.  Moreover, we noted
  607. that the absence of *Note's had made the text a bit unpleasant to
  608. read; so we inserted see and See whenever Texinfo would have done
  609. it in the printed text. See Localization of strings, for more detailed
  610. information on how localize these strings.
  611.  
  612.    For menus, Texinfo relies on the visualisation of both the button
  613. name and the destination node name when building indices. Cutting
  614. away the destination node name would have resulted in a horribly looking
  615. index. So we decided to preserve the visualization of the destination
  616. node name after a menu button when building an index. A normal menu
  617. will instead show just a button.
  618.  
  619.    Also, we slightly improved an aspect of @pxref. Since no ending
  620. point was needed before the closing parenthesis, we stripped it off.
  621.  
  622.    All the features of Info which maps to AmigaGuide(R) have been
  623. implemented.  Thus, the Top node of a Texinfo document will become
  624. the Main node of the AmigaGuide(R) file, the @master command will
  625. be set to the name of the Texinfo file, and the @width command will
  626. be set to the value makeinfo is using for formatting text. The
  627. Index button points to the Concept Index (if the Concept Index
  628. exists).
  629.  
  630.    The -no-headers option has now a better behaviour when also
  631. -amiga is selected. *Note's are replaced by see, etc..  The
  632. result is a completely human readable ASCII file. -no-headers in
  633. combination with -amiga-39 generates ASCII files with ANSI escape
  634. sequences. See Localization of strings, for more detailed information on
  635. how localize these strings.
  636.  
  637. Texindex
  638. ********
  639.  
  640.    This chapter explains how to use texindex. It is extraced from the
  641. Texinfo manual (with small modifications).
  642.  
  643.    The tex formatting commands itself does not sort the indices; it
  644. writes an output file of unsorted index data.  This is a misfeature of
  645. TeX.  Hence, to generate a printed index, you first need a sorted index
  646. to work from.  The texindex command sorts indices.  (The source file
  647. texindex.c comes as part of this distribution.)
  648.  
  649.      Usage: texindex [-k] [-T tempdirinfile [-o outfile] ...
  650.  
  651.    Each infile arg can optionally be followed by a -o outfile arg;
  652. for each infile that is not followed by a -o arg, the infile name
  653. with s (for `sorted') appended is used for the outfile.
  654.  
  655.        -T dir is the directory to put temp files in, instead of
  656. /tmp.
  657.  
  658.        -k means `keep tempfiles', for debugging.
  659.  
  660.    The tex formatting command outputs unsorted index files under
  661. names that obey a standard convention.  These names are the name of
  662. your main input file to the tex formatting command, with everything
  663. after the first period thrown away, and the two letter names of indices
  664. added at the end.  For example, the raw index output files for the
  665. input file foo.texinfo would be foo.cpfoo.vrfoo.fn,
  666. foo.tpfoo.pg and foo.ky.  Those are exactly the arguments
  667. to give to texindex.
  668.  
  669.    For each file specified, texindex generates a sorted index file
  670. whose name is made by appending s to the input file name.  The
  671. @printindex command knows to look for a file of that name.
  672. texindex does not alter the raw index output file.
  673.  
  674.    After you have sorted the indices, you need to rerun the tex
  675. formatting command on the Texinfo file.  This regenerates a formatted
  676. DVI file with up-to-date index entries.(1)
  677.  
  678.    To summarize, this is a three step process:
  679.  
  680.   1. Run the tex formatting command on the Texinfo file.  This
  681.      generates the formatted DVI file as well as the raw index files
  682.      with two letter extensions.
  683.  
  684.   2. Run the shell command texindex on the raw index files to sort
  685.      them.  This creates the corresponding sorted index files.
  686.  
  687.   3. Rerun the tex formatting command on the Texinfo file.  This
  688.      regenerates a formatted DVI file with the index entries in the
  689.      correct order.  This second run also corrects the page numbers for
  690.      the cross references.  (The tables of contents are always correct.)
  691.  
  692.    You need not run texindex each time after you run the tex
  693. formatting.  If you do not, on the next run, the tex formatting
  694. command will use whatever sorted index files happen to exist from the
  695. previous use of texindex.  This is usually OK while you are debugging.
  696.  
  697.    ---------- Footnotes ----------
  698.  
  699.    (1)  If you use more than one index and have cross references to an
  700. index other than the first, you must run tex three times to get
  701. correct output: once to generate raw index data; again (after
  702. texindex) to output the text of the indices and determine their
  703. true page numbers; and a third time to output correct page numbers in
  704. cross references to them.  However, cross references to indices are
  705. rare.
  706.  
  707. Known Problems & Bugs
  708. *********************
  709.  
  710. Problems
  711. ========
  712.  
  713.    It should be noted that unfortunately Texinfo doesn't have any way
  714. of specifying a line in a node. So this feature of AmigaGuide(R) is
  715. not representable in a Texinfo file. This is indeed the biggest
  716. drawback of using Texinfo for writing AmigaGuide(R) documents. But
  717. we feel that the advantages are definitely overwhelming.
  718.  
  719.    Due to the fact that AmigaGuide(R) is rather picky about the
  720. characters it allows in a button name or in a node name, at least for
  721. the time being makeinfo has to replace in a node name every slash or
  722. backslash with a dash and every quotes with a single open quote. Still,
  723. names with curly braces in them will behave incorrectly. But this is an
  724. AmigaGuide(R) problem.
  725.  
  726.        Note: Texinfo doesn't support officially extended or accented
  727. characters. The workaround, for the time being, is to use ASCII extended
  728. characters like à, etc. in the text (in place of the various \`, etc.
  729. commands). makeinfo will process the document flawlessly, and by
  730. including the amigatexinfo.tex file supplied in this distribution
  731. archive before texinfo.tex into your document, Texinfo will
  732. typeset correctly the accented characters (this should work on any TeX
  733. system which supports TeX 3.0; we tried successfully AmigaTeX and
  734. PasTeX). Note also that the first (October) release of makeinfo 1.49
  735. had an incorrect amiga.tex file, which did not work with many foreign
  736. characters.
  737.  
  738. Bugs
  739. ====
  740.  
  741.    Finally, we want to describe some bugs we found both in Texinfo and
  742. AmigaGuide(R), whose knowledge can be helpful.
  743.  
  744.        AmigaGuide(R) V39 does not handle correctly the @ character.
  745. When AmigaGuide(R)(R) finds this character in the first column of a
  746. line, it simply ignores the entire word (this because its commands
  747. always have to begin in the first column of a line). Due to
  748. implementation problems, we didn't solve this problem (sorry).
  749. AmigaGuide(R) 39 ignores the word also if @ is the first
  750. character in an attribute. So @{b}@section@{ub} is ignored.
  751. makeinfo puts a space character before it, so that the commands
  752. are showed. This is only one of the reasons why we decided to not
  753. support the @wordwrap feature of AmigaGuide(R) V39 (with wordwrap
  754. the possibility to get a @ command at the first column is high, and
  755. even this commands are not displayed).  Since the wordwrap of
  756. AmigaGuide(R) 39 is rather simple, everything different than
  757. plain text would appeared very bad.
  758.  
  759.        AmigaGuide(R) 33.1369 doesn't work properly if the name of a
  760. button contains an apostrophe ('). So you shouldn't use button names
  761. containing @code{}@samp{}, etc. (they are always forbidden in
  762. node names, but you can specify a button name different from the node
  763. name in an external reference command). The workaround is to not use
  764. apostrophes in button names (AmigaGuide(R) V34 and V39 doesn't suffer
  765. from this problem). Since now AmigaGuide(R) V34 is freely
  766. distributable, you should have no problem upgrading to the new
  767. versions. The makeguide distribution archive contains the latest
  768. version of AmigaGuide(R) V34 (version 34.8, dated 3-May-93).
  769.  
  770.        Texinfo 2.16 and 3.0 will insert an unnamed TOC entry for the
  771. Top node when the automatic pointer generation feature of makeinfo is
  772. used (that is, your Top node is defined via @node Top followed by
  773. @top). You should include the whole Top node in a @ifinfo/@end
  774. ifinfo pair for the time being.
  775.  
  776.        texinfo.tex version 2.108 has wrong settings for
  777. @afourpaper.  We corrected these problems in the version 2.109
  778. (included with this archive).
  779.  
  780.        makeinfo does not sort correctly the index if an entry contains
  781. formatting commands, like @code. Index entries should be written
  782. without formatting commands or making different entries for  Info and
  783. Texinfo. The Index entries of makeguide.texi are written in this
  784. way.
  785.  
  786. Distribution Files
  787. ******************
  788.  
  789.    The archive mkguide154.lha contains the following files:
  790.  
  791.    In the root directory:
  792.  
  793. makeinfo
  794.      The makeinfo program. See What is makeinfo, for more information
  795.      how to use it.
  796.  
  797. texindex
  798.      Used for sorting the Indexes generated by Texinfo (when
  799.      compiling it with TeX). You need to run TeX twice to have the
  800.      Indexes updated. See Texindex, for more information how to use it.
  801.  
  802. COPYING
  803.      The GNU distribution license. makeguide is distributed under this
  804.      license. Please read it!
  805.  
  806. CHANGES
  807.      Changes made to makeinfo since the latest release.
  808.  
  809. README
  810.      Read it!
  811.  
  812. AmigaGuide
  813.      Utility that displays AmigaGuide(R) documents. You need
  814.      amigaguide.library in your libs: directory.
  815.  
  816.    In the libs directory:
  817.  
  818. amigaguide.library
  819.      This library contains functions to handle hyper-text documents.
  820.      You should copy it in your libs: directory in order to work. Use
  821.      the AmigaGuide utility to display the hypertext documents (e.g.
  822.      makeguide.guide in the doc directory.
  823.  
  824.    In the src directory:
  825.  
  826. getopt.c
  827.      Support file for makeinfo.
  828.  
  829. getopt1.c
  830.      Support file for makeinfo.
  831.  
  832. getopt.h
  833.      Support file for makeinfo.
  834.  
  835. makeinfo.c
  836.      The source for makeinfo.
  837.  
  838. texindex.c
  839.      The source for texindex.
  840.  
  841. Makefile
  842.      Makefile to build makeinfo. You need the GNU C compiler to
  843.      compile it (makeinfo.c uses some features specific to the GNU C
  844.      compiler). The makefile has options to compile it with Markus
  845.      Wild's GCC port (actual version 2.3.3) and Davide Pasetto's GCC
  846.      port (actual version 2.2.2).
  847.  
  848.    In the texinfo directory:
  849.  
  850.    This directory contains the macros for use with TeX.
  851.  
  852. texinfo.tex
  853.      The macro package that defines the language of Texinfo. You should
  854.      copy this file in a path where TeX can find it. Version 2.109.
  855.  
  856. texinfotimes.tex
  857.      Same as texinfo.tex, but with font descriptions for PostScript.
  858.      You need the Postscript fonts Times, Helvetica and Courier
  859.      installed and a TeX able to handle with PostScript fonts. Version
  860.      2.109.
  861.  
  862. amigatexinfo.tex
  863.      Special file for converting the accents in specific TeX
  864.      characters. If you use accents in your .texinfo file, you should
  865.      include this file before texinfo.tex or texinfotimes.tex
  866.  
  867.    In the doc directory:
  868.  
  869. Makeguide.texi
  870.      The documentation of makeinfo in Texinfo format. You can use
  871.      makeinfo program to convert it to plain ASCII file or to the
  872.      AmigaGuide(R) hypertext format. See Options, to learn more about
  873.      how to generate output. You can also compile this document with
  874.      texinfo.tex or texinfotimes.tex to have a nice output on the
  875.      printer.
  876.  
  877. Makeguide.guide
  878.      The documentation of makeinfo in AmigaGuide(R) V39 hypertext
  879.      format.  Note that AmigaGuide(R) V34 displays this file without
  880.      problems, since all unrecognized commands and attributes are
  881.      simply ignored by AmigaGuide(R).
  882.  
  883. Makeguide.doc
  884.      The documentation of makeinfo in ASCII with ANSI escape
  885.      sequences.  You need a file-viewer able to handle ANSI escape
  886.      sequences (like Leggi).
  887.  
  888. Makeguide.dvi
  889.      The Device Independent format. You can print it on your printer
  890.      (with TeX).
  891.  
  892. Makeguide.ps
  893.      The documentation in PostScript format. If you print it on a
  894.      PostScript printer (or on a non-PostScript printer using post),
  895.      you can see the beautiful output generated by
  896.      texinfotimes.tex.
  897.  
  898. Makefile
  899.      Makefile for generating the various documentation types from the
  900.      documentation source file makeguide.texi.
  901.  
  902. Acknowledgments
  903. ***************
  904.  
  905.    We would like to thank GNU for the creation of this great
  906. documentation system and Tom Rokicki for allowing us to distribute the
  907. amigatexinfo.tex file, which is based on the amiga.tex file
  908. supplied in the distribution of Radical Eye's AmigaTeX, and for his
  909. invaluable assistance in adapting amiga.tex to Texinfo.
  910.  
  911.    Stefan Becker made some very useful suggestions; most of them are now
  912. implemented in this version of makeinfo; he was also a beta-tester
  913. for this new version.
  914.  
  915. Author Info
  916. ***********
  917.  
  918.    Good Texinfo-ing! Please send any bug report or enhancement
  919. request to
  920.  
  921.          Reinhard Spisser
  922.          Via Licurgo 12
  923.          I-20162 Milano MI
  924.      
  925.          BIX: reinhards@bix.com
  926.          INTERNET: spisser@ghost.sm.dsi.unimi.it
  927.                    rein@bliss.st.dsi.unimi.it
  928.      
  929.      
  930.          Sebastiano Vigna
  931.          Via California 22
  932.          I-20144 Milano MI
  933.      
  934.          BIX: svigna@bix.com
  935.          INTERNET: vigna@ghost.dsi.unimi.it
  936.          UUCP: seba@sebamiga.adsp.sub.org
  937.  
  938. Concept Index
  939. *************
  940.  
  941.  
  942.  
  943.  -error-limit limit                     Options
  944.  -fill-column width                     Options
  945.  -footnote-style style                  Options
  946.  -no-headers                            Options
  947.  -no-number-footnotes                   Options
  948.  -no-pointer-validate                   Options
  949.  -no-split                              Options
  950.  -no-validate                           Options
  951.  -no-warn                               Options
  952.  -output file                           Options
  953.  -paragraph-indent indent               Options
  954.  -D var                                 Options
  955.  -I dir                                 Options
  956.  -o file                                Options
  957.  Acknowledgments                        Acknowledgments
  958.  AmigaGuide                             Distribution Files
  959.  amigaGuide.library                     Distribution Files
  960.  amigatexinfo.tex                       Distribution Files
  961.  amiga_convert_nodes                    Conversion of spaces in node names
  962.  Appendixstring                         Localization of strings
  963.  Author Info                            Author Info
  964.  Becker, Stefan                         Acknowledgments
  965.  Bugs                                   Bugs
  966.  CHANGES                                Distribution Files
  967.  Chapterstring                          Localization of strings
  968.  Conversion of node names               Conversion of spaces in node names
  969.  COPYING                                Distribution Files
  970.  Differences from GNU makeinfo          Differences from GNU makeinfo
  971.  Distribution                           Distribution
  972.  Distribution Files                     Distribution Files
  973.  Footnotestring                         Localization of strings
  974.  getopt.c                               Distribution Files
  975.  getopt.h                               Distribution Files
  976.  getopt1.c                              Distribution Files
  977.  GNU                                    Acknowledgments
  978.  How it started                         How it started
  979.  Index button                           Index button
  980.  Known Problems & Bugs                  Known Problems & Bugs
  981.  Makefile                               Distribution Files
  982.  Makefile                               Distribution Files
  983.  Makeguide.doc                          Distribution Files
  984.  Makeguide.dvi                          Distribution Files
  985.  Makeguide.guide                        Distribution Files
  986.  Makeguide.ps                           Distribution Files
  987.  Makeguide.texi                         Distribution Files
  988.  makeinfo                               Distribution Files
  989.  makeinfo.c                             Distribution Files
  990.  Output modes                           Output modes
  991.  pagestring                             Localization of strings
  992.  Pointer validation with makeinfo       Pointer Validation
  993.  Postscript fonts                       Using Postscript fonts
  994.  Problems                               Problems
  995.  README                                 Distribution Files
  996.  Requirements                           Requirements
  997.  Rokicki, Tomas                         Acknowledgments
  998.  Sectionstring                          Localization of strings
  999.  sectionstring                          Localization of strings
  1000.  texindex                               Texindex
  1001.  Texindex                               Texindex
  1002.  texindex                               Distribution Files
  1003.  texindex.c                             Distribution Files
  1004.  texinfo.tex                            Distribution Files
  1005.  texinfotimes.tex                       Using Postscript fonts
  1006.  texinfotimes.tex                       Distribution Files
  1007.  Using Postscript fonts                 Using Postscript fonts
  1008.  Validation of pointers                 Pointer Validation
  1009.  What is Texinfo?                       What is Texinfo?
  1010.  Why makeinfo?                          Why makeinfo?
  1011.  Xrefstring                             Localization of strings
  1012.  xrefstring                             Localization of strings
  1013.  
  1014.